// pages/citylist/citylist.js
const map = require('../../libs/map')

Page({

  /** 页面的初始数据 */
  data: {
    map: map,  
    letter: 'A',       // 表示当前选中的导航字母
    cityname: '未选择', // 表示当前定位城市
    locSuccess: false,  // 表示是否已经定位成功
  },

  /** 点击定位城市名后执行 
   *  如果当前定位失败，则需要引导用户重新授权
   *  如果当前定位成功，则返回首页即可
   */
  tapLocCity(){
    if(this.data.locSuccess){
      getApp().globalData.cityname = this.data.cityname
      wx.navigateBack()
    }else {  // 定位失败了，需要引导用户重新授权
      wx.showModal({
        title: '提示',
        content: '暂未授予定位权限，是否跳转到设置，重新授权？',
        success: (res)=>{
          if(res.confirm){  // 用户点击了确定按钮  res.confirm==true
            // 跳转到设置页，重新授权
            this.toSetting()
          }
        }
      })
    }
  },

  /** 去设置页 */
  toSetting(){
    wx.openSetting({
      success:(res)=>{
        console.log('设置结果', res)
        if(res.authSetting['scope.userLocation']){
          // 用户重新赋予了权限，自动重新定位即可
          this.getLocation()
        }
      }
    })
  },

  /** 点击某城市名后，存入globalData，返回首页 */
  tapCity(e){
    let cityname = e.target.dataset.c
    // 存入全局App对象的globalData属性中
    getApp().globalData.cityname = cityname
    wx.navigateBack()
  },

  /** 当点击右侧边栏字母后执行 */
  tapLetter(e){
    let letter = e.target.dataset.l
    this.setData({letter})
  },

  /** 加载当前位置信息，并且显示在页面左上角 */
  getLocation(){
    // 加载腾讯位置服务SDK，获取当前城市信息
    let qqmapsdk = getApp().globalData.qqmapsdk
    qqmapsdk.reverseGeocoder({
      success: (res)=>{
        let cityname = res.result.address_component.city
        console.log('逆地址检索成功', cityname)
        this.setData({cityname, locSuccess:true})
      },
      fail: (err)=>{
        console.warn('逆地址检索失败', err)
        this.setData({
          cityname:'定位失败，点击重试',
          locSuccess: false
        })
      }
    })
  },

  /** 生命周期函数--监听页面加载 */
  onLoad(options) {
    console.log(map)
    // 重新加载定位
    this.getLocation()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})